home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib08.dsk / APPLE FINANCIER - PART 6.bas < prev    next >
BASIC Source File  |  2023-02-26  |  28KB  |  532 lines

  1. 1  REM  ******************************
  2. 2  REM  *  APPLE FINANCIER PART 6    *
  3. 3  REM  *    BY LARRY ABRAMS         *
  4. 4  REM  *   COPYRIGHT (C) 1982       *
  5. 5  REM  *   BY MICRO-SPARC INC       *
  6. 6  REM  *   LINCOLN, MA. 01773       *
  7. 7  REM  ******************************
  8. 110 :
  9. 200  REM  MENU
  10. 201  ONERR  GOTO 500
  11. 202  HOME : VTAB 2: HTAB 12: INVERSE : PRINT " SELECT ONE OF THE FOLLOWING ": NORMAL : GOSUB 400
  12. 204 G$ =  CHR$(7)
  13. 210  PRINT  TAB( 9)"STRAIGHT LINE DEPRECIATION  <1>"
  14. 220  PRINT  TAB( 3)"VAR RATE - DECL BAL DEPRECIATION  <2>"
  15. 230  PRINT  TAB( 12);"ACCRUED SIMPLE INTEREST  <3>"
  16. 240  PRINT  TAB( 18);"COMPOUND INTEREST  <4>"
  17. 250  PRINT  TAB( 10);"UNEARNED INTEREST REBATES  <5>"
  18. 260  PRINT  TAB( 5);"LINEAR REGRESSION / TREND LINE  <6>"
  19. 270  PRINT  TAB( 14);"EXPONENTIAL CURVE FIT  <7>"
  20. 280  PRINT  TAB( 14)"DIRECT REDUCTION LOAN  <8>"
  21. 290  PRINT  TAB( 14);"AMORTIZATION SCHEDULE  <9>"
  22. 292  GOSUB 400: PRINT  TAB( 24);"<RETURN> TO QUIT":VT =  PEEK(37) +2
  23. 293 HT = 30: VTAB VT: HTAB HT: CALL  -868: PRINT "WHICH":HT = 38:LS = 1: GOSUB 902:ANS =  VAL(CS$): IF  LEN(CS$) = 0  THEN  END 
  24. 295  IF  STR$(ANS) < >CS$  OR ANS = 0  THEN  PRINT G$;: GOTO 293
  25. 296  ON ANS GOTO 1000,2000,3000,4000,5000,6000,7000,8000,9000
  26. 298 :
  27. 300  REM  PRINT USING
  28. 302 P$ =  STR$( INT((P +.005) *100))
  29. 304  IF  LEN(P$) <3  THEN P$ =  LEFT$("000",(3 - LEN(P$))) +P$
  30. 305 PP$ =  LEFT$(P$,( LEN(P$) -2))
  31. 306  IF DP = 0  THEN P$ = PP$: GOTO 308
  32. 307 P$ = PP$ +"." + RIGHT$(P$,DP)
  33. 308 P$ =  RIGHT$("          " +P$,PL)
  34. 310  RETURN 
  35. 312 :
  36. 400  FOR DOT = 0 TO 39: PRINT ".";: NEXT DOT: RETURN 
  37. 402 :
  38. 500  REM  ERROR HANDLING ROUTINE
  39. 502  HOME : VTAB 5: INVERSE : PRINT "CHECK APPLESOFT MANUAL PG 136 FOR ERR": NORMAL 
  40. 504  PRINT : PRINT "ERROR IS NUMBER "; PEEK(222): PRINT "LOCATED IN LINE "; PEEK(218) + PEEK(219) *256: POKE 34,0: END 
  41. 505 :
  42. 600  REM  DAYS BETWEEN DATES
  43. 602  HOME : VTAB 5:A(4) = 0: PRINT "BEGINNING DATE  ";: GOSUB 606:A(4) = ND: PRINT 
  44. 604  PRINT "   ENDING DATE  ";: GOSUB 606:A(4) = ND -A(4): RETURN 
  45. 606  PRINT  CHR$(91);"YY"; CHR$(93);"YY.MMDD: ";: INPUT "";DTE
  46. 608 YRS =  INT(DTE):MOS =  INT((DTE -YRS) *100):DAYS =  INT((DTE -YRS -MOS/100) *1E4 +.5)
  47. 610 YRS = YRS -1900 *(YRS >99)
  48. 612  REM  ACTUAL DAYS (365)
  49. 613 YY = YRS -(MOS < = 2)
  50. 614 LD =  INT(.4 *MOS +2.3) *(MOS >2)
  51. 616 ND = 365 *YRS +31 *(MOS -1) +DAYS + INT(YY/4) -LD: RETURN 
  52. 618 :
  53. 620  REM  BANKING YEAR (360)
  54. 622 LD = DAYS
  55. 624  IF DAYS < >31  THEN 630
  56. 626  IF A(4) >0  AND PDAYS <30  THEN 630
  57. 628 LD = 30
  58. 630 ND = 360 *YRS +30 *MOS +LD:PDAYS = DAYS: RETURN 
  59. 632 :
  60. 700  REM  SCREEN DUMP TO PRINTER
  61. 702 LOC =  PEEK(105) + PEEK(106) *256 +2
  62. 704  PRINT  CHR$(4)"PR#1"
  63. 706  FOR LINE = TLINE TO BLINE
  64. 708  VTAB (LINE): CALL  -990
  65. 710  POKE LOC,40: POKE LOC +1, PEEK(40): POKE LOC +2, PEEK(41)
  66. 712  PRINT SCR$: NEXT LINE
  67. 714  PRINT  CHR$(4)"PR#0"
  68. 716  RETURN 
  69. 718 :
  70. 900  REM  DATA INPUT
  71. 901  FOR I = 0 TO LS:NS$(I) = " ": NEXT I:CS$ = ""
  72. 902  FOR I = 0 TO LS
  73. 904  VTAB VT: HTAB HT +I: GET NS$: IF NS$ =  CHR$(13)  THEN NS$(I) = "": GOTO 930
  74. 906  IF NS$ =  CHR$(8)  OR NS$ =  CHR$(21)  THEN 910
  75. 908  IF NS$ =  CHR$(44)  OR NS$ =  CHR$(58)  OR  ASC(NS$) <32  THEN  PRINT G$;: GOTO 904
  76. 910  IF NS$ =  CHR$(8)  AND I = 0  THEN 904
  77. 912  IF NS$ =  CHR$(8)  THEN I = I -1: GOTO 904
  78. 913  IF NS$ =  CHR$(21)  AND I <LS  THEN I = I +1: GOTO 904
  79. 914  IF I = LS  AND NS$ < > CHR$(13)  THEN  PRINT G$;: GOTO 904
  80. 916 NS$(I) = NS$: VTAB VT: HTAB HT +I:: PRINT NS$(I): NEXT I
  81. 930 AL = I:I = LS: NEXT I:CS$ = ""
  82. 932  FOR I = 0 TO AL -1:CS$ = CS$ +NS$(I): NEXT I
  83. 934  IF CS$ =  CHR$(13)  OR CS$ = ""  THEN  VTAB VT: HTAB HT: PRINT  SPC( LS): GOTO 938
  84. 936  VTAB VT: HTAB HT: PRINT CS$; SPC( LS - LEN(CS$))
  85. 938  PRINT : RETURN 
  86. 940 :
  87. 1000  REM  STRAIGHT LINE DEPRECIATION
  88. 1002 :
  89. 1004  REM  PROGRAM INSTRUCTIONS
  90. 1006  CLEAR :DP = 0:G$ =  CHR$(7): HOME : VTAB 10
  91. 1008  PRINT "INSTRUCTIONS? ";: POKE  -16368,0: GET ANS$: IF  LEFT$(ANS$,1) < >"Y"  THEN  HOME : VTAB 10: GOTO 1102
  92. 1010  HOME : VTAB 5: PRINT "  STRAIGHT LINE DEPRECIATION SCHEDULE": GOSUB 400
  93. 1012  PRINT "THE ANNUAL DEPRECIATION ALLOWANCE USING"
  94. 1014  PRINT "THIS METHOD IS DETERMINED BY DIVIDING"
  95. 1016  PRINT "THE COST (STARTING BOOK VALUE) LESS ITS"
  96. 1018  PRINT "ESTIMATED SALVAGE VALUE BY ITS USEFUL"
  97. 1020  PRINT "LIFE EXPECTANCY.  THAT IS:": PRINT 
  98. 1022  INVERSE : PRINT " DEPRECIATION ";: NORMAL : PRINT "=": PRINT 
  99. 1024  PRINT "(START BK VAL - SALVAGE VAL) / (LIFE)": PRINT 
  100. 1026 :
  101. 1100  REM  INPUT STARTING,SALVAGE,LIFE
  102. 1102  PRINT "1. STARTING BOOK VALUE ";: IF FLAG  THEN  PRINT A(1): GOTO 1106
  103. 1104  INPUT A(1)
  104. 1106  PRINT "2. SALVAGE VALUE"; TAB( 24);: IF FLAG  THEN  PRINT A(2): GOTO 1110
  105. 1108  INPUT A(2)
  106. 1110  PRINT "3. LIFE EXPECTANCY"; TAB( 24);: IF FLAG  THEN  PRINT A(3): GOTO 1114
  107. 1112  INPUT A(3):FLAG = 1
  108. 1114  PRINT : PRINT "ANY CHANGES? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "N"  THEN 1118
  109. 1116  PRINT : INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): HOME : VTAB 10: GOTO 1102
  110. 1118 BKVLUE = A(1):SALVAGE = A(2):LFE = A(3)
  111. 1120  PRINT : PRINT "DISPLAY ENTIRE SCHEDULE? ";: POKE  -16368,0: GET ANS$: PRINT ANS$
  112. 1122  IF  LEFT$(ANS$,1) = "Y"  THEN I = 0: GOTO 1202
  113. 1124  PRINT "WHICH YEARS (START,END)";: INPUT I,J
  114. 1126 :
  115. 1200  REM  OUTPUT HEADINGS
  116. 1202  HOME : PRINT  TAB( 5);"DEPR"; TAB( 14);"REMAIN"; TAB( 25);"REMAIN"; TAB( 35);"TOTAL"
  117. 1204  PRINT "YR"; TAB( 4);"AMOUNT"; TAB( 12);"DEPR VALUE"; TAB( 23);"BOOK VALUE"; TAB( 35);"DEPREC";
  118. 1206  GOSUB 400: POKE 34,3
  119. 1208 :
  120. 1300  REM  CALCULATIONS/OUTPUT
  121. 1302  IF   NOT I  THEN I = 1:J = LFE
  122. 1304  IF J >LFE  THEN J = LFE
  123. 1306  FOR K = I TO J
  124. 1308 DEP = (BKVLUE -SALVAGE)/LFE:TDEP = K *DEP:RDV = (LFE -K) *DEP:RBV = RDV +SALVAGE
  125. 1310  PRINT  SPC( 1 -(K >9));K; TAB( 4);:PL = 7:P = DEP: GOSUB 300: PRINT P$;:PL = 10:P = RDV: GOSUB 300: PRINT P$;:P = RBV: GOSUB 300: PRINT P$;:P = TDEP: GOSUB 300: PRINT P$;: REM  
  126. 1312  NEXT K
  127. 1314 :
  128. 1400  REM  PROGRAM ENDING
  129. 1402  PRINT : VTAB 24: POKE 34,0
  130. 1404  PRINT "ANOTHER RUN? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "Y"  THEN  HOME : VTAB 12: GOTO 1102
  131. 1406  GOTO 200: REM  RETURN TO MENU
  132. 1408 :
  133. 2000  REM  VARIABLE RATE - DECLINING BALANCE DEPRECIATION
  134. 2002 :
  135. 2004  REM  PROGRAM INSTRUCTIONS
  136. 2006  CLEAR :DP = 0:G$ =  CHR$(7): HOME : VTAB 10
  137. 2008  PRINT "INSTRUCTIONS? ";: POKE  -16368,0: GET ANS$: IF  LEFT$(ANS$,1) < >"Y"  THEN  HOME : VTAB 10: GOTO 2102
  138. 2010  HOME : VTAB 2: PRINT  TAB( 4)"VARIABLE RATE - DECLINING BALANCE": PRINT  TAB( 10)"DEPRECIATION SCHEDULE": GOSUB 400
  139. 2012  PRINT "THIS METHOD PROVIDES FOR MORE DEPRECIA-": PRINT "TION IN EARLIER YEARS AND DECREASING": PRINT "DEPRECIATION IN LATER YEARS."
  140. 2014  PRINT "THE VARIABLE RATE IS A FACTOR (E.G. 1.5": PRINT "OR 1.25) THAT'S THE SAME AS A DECLINING BALANCE PERCENTAGE."
  141. 2016  PRINT 
  142. 2018  PRINT "THIS SCHEDULE WILL ALSO GIVE THE CROSS-": PRINT "OVER POINT (HI-LIGHTED), WHERE THE": PRINT "SWITCH FROM THIS METHOD TO THE STRAIGHT"
  143. 2020  PRINT "LINE METHOD SHOULD BE MADE.  AT THIS": PRINT "POINT, STRAIGHT LINE DEPRECIATION IS"
  144. 2022  PRINT "GREATER THAN THAT BY THE DECLINING": PRINT "BALANCE METHOD."
  145. 2024  PRINT 
  146. 2026 :
  147. 2100  REM  INPUT STARTING,SALVAGE,LIFE,FACT
  148. 2102  PRINT "1. STARTING BOOK VALUE ";: IF FLAG  THEN  PRINT A(1): GOTO 2106
  149. 2104  INPUT A(1)
  150. 2106  PRINT "2. SALVAGE VALUE"; TAB( 24);: IF FLAG  THEN  PRINT A(2): GOTO 2110
  151. 2108  INPUT A(2)
  152. 2110  PRINT "3. LIFE EXPECTANCY"; TAB( 24);: IF FLAG  THEN  PRINT A(3): GOTO 2114
  153. 2112  INPUT A(3)
  154. 2114  PRINT "4. RATE FACTOR"; TAB( 24);: IF FLAG  THEN  PRINT A(4): GOTO 2118
  155. 2116  INPUT A(4):FLAG = 1
  156. 2118  PRINT : PRINT "ANY CHANGES? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "N"  THEN 2122
  157. 2120  PRINT : INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): HOME : VTAB 10: GOTO 2102
  158. 2122 BKVLUE = A(1):SALVAGE = A(2):LFE = A(3):FACT = A(4)
  159. 2124  PRINT : PRINT "DISPLAY ENTIRE SCHEDULE?";: POKE  -16368,0: GET ANS$: PRINT ANS$
  160. 2126  IF  LEFT$(ANS$,1) = "Y"  THEN I = 0: GOTO 2202
  161. 2128  PRINT "WHICH YEARS (START,END)";: INPUT I,J
  162. 2130 :
  163. 2200  REM  OUTPUT HEADING
  164. 2202  HOME : PRINT  TAB( 5);"DEPR"; TAB( 14);"REMAIN"; TAB( 25);"REMAIN"; TAB( 35);"TOTAL"
  165. 2204  PRINT "YR"; TAB( 4);"AMOUNT"; TAB( 12);"DEPR VALUE"; TAB( 23);"BOOK VALUE"; TAB( 35);"DEPREC"
  166. 2206  GOSUB 400: POKE 34,3
  167. 2208 :
  168. 2300  REM  CALCULATION/OUTPUT
  169. 2302  IF   NOT I  THEN I = 1:J = LFE
  170. 2304  IF J >LFE  THEN J = LFE
  171. 2306  FOR K = 1 TO J
  172. 2308 DEP = (1 -FACT/LFE) ^(K -1) *(FACT/LFE) *BKVLUE:TDEP = (1 -((1 -FACT/LFE) ^(K))) *BKVLUE
  173. 2310 RDV = BKVLUE -SALVAGE -TDEP:RBV = RDV +SALVAGE
  174. 2312  IF (LFE -K) *DEP <RDV  THEN  INVERSE 
  175. 2314  PRINT  SPC( 1 -(K >9));K; TAB( 4);:PL = 7:P = DEP: GOSUB 300: PRINT P$;:PL = 10:P = RDV: GOSUB 300: PRINT P$;:P = RBV: GOSUB 300: PRINT P$;:P = TDEP: GOSUB 300: PRINT P$;: REM 
  176. 2316  NEXT K: NORMAL 
  177. 2318 :
  178. 2400  REM  PROGRAM ENDING
  179. 2402  PRINT : VTAB 24: POKE 34,0
  180. 2404  PRINT "ANOTHER RUN? ";: POKE  -16368,0: GET ANS$: PRINT ANS$: IF  LEFT$(ANS$,1) = "Y"  THEN  HOME : VTAB 12: GOTO 2102
  181. 2406  GOTO 200: REM  RETURN TO MENU
  182. 2408 :
  183. 3000  REM  ACCRUED INTEREST
  184. 3002  CLEAR :DP = 2:G$ =  CHR$(7)
  185. 3004  HOME : VTAB 5: PRINT "ENTER A ZERO FOR ITEM TO CALCULATE:": PRINT 
  186. 3006  PRINT "1. BEGINNING AMOUNT"; TAB( 28);: IF FLAG  THEN  PRINT A(1): GOTO 3010
  187. 3008  INPUT A(1)
  188. 3010  PRINT "2. ANNUAL INTEREST RATE %"; TAB( 28);: IF FLAG  THEN  PRINT A(2): GOTO 3014
  189. 3012  INPUT A(2)
  190. 3014  PRINT "3. FUTURE AMOUNT"; TAB( 28);: IF FLAG  THEN  PRINT A(3): GOTO 3022
  191. 3016  INPUT A(3)
  192. 3018 FLAG = 0: VTAB 10: CALL  -958: PRINT : PRINT "DO YOU WISH TO CALCULATE THE NUMBER": INPUT "OF DAYS BETWEEN TWO DATES? ";ANS$
  193. 3020  IF  LEFT$(ANS$,1) = "Y"  THEN FLAG = 1: GOSUB 600: GOTO 3004
  194. 3022  VTAB 10: CALL  -958: PRINT "4. NUMBER OF DAYS"; TAB( 28);: IF FLAG  THEN  PRINT A(4): GOTO 3026
  195. 3024  INPUT A(4):FLAG = 1
  196. 3026  VTAB 15: INVERSE : PRINT " TYPE 'END' TO RETURN TO MENU ": NORMAL : PRINT : INPUT "ANY CHANGES? ";ANS$
  197. 3028  IF  LEFT$(ANS$,1) = "N"  THEN 3102
  198. 3030  IF  LEFT$(ANS$,1) = "E"  THEN 200
  199. 3032  INPUT "WHICH PART? ";W: IF W = 4  THEN 3018
  200. 3034  PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): GOTO 3004
  201. 3036 :
  202. 3100  REM  CALCULATION SECTION
  203. 3102  IF A(1) = 0  THEN A(1) = A(3)/(1 +(A(2)/36500 *A(4))):A(1) =  INT(A(1) *100 +.5)/100
  204. 3104  IF A(2) = 0  THEN A(2) = (A(3) -A(1)) *36500/(A(1) *A(4)):A(2) =  INT(A(2) *100 +.5)/100
  205. 3106  IF A(3) = 0  THEN A(3) = A(2)/36500 *A(1) *A(4):A(3) =  INT((A(1) +A(3)) *100 +.5)/100
  206. 3108  IF A(4) = 0  THEN A(4) = (A(3) -A(1))/(A(1) *A(2)/36500):A(4) =  INT(A(4) +.5)
  207. 3110  GOTO 3004
  208. 3112 :
  209. 4000  REM  COMPOUND INTEREST SECTION
  210. 4002  CLEAR :G$ =  CHR$(7)
  211. 4004  HOME : VTAB 5: PRINT "1. AMOUNT TO BE COMPOUNDED"; TAB( 30);: IF FLAG  THEN  PRINT A(1): GOTO 4008
  212. 4006  INPUT A(1)
  213. 4008  PRINT "2. YRLY INTEREST RATE (MAX)"; TAB( 30);: IF FLAG  THEN  PRINT A(2): GOTO 4012
  214. 4010  INPUT A(2)
  215. 4012  PRINT "3. CHANGE IN INTEREST RATE"; TAB( 30);: IF FLAG  THEN  PRINT A(3): GOTO 4020
  216. 4014  INPUT A(3)
  217. 4016 FLAG = 0: VTAB 8: CALL  -958: PRINT : PRINT "DO YOU WISH TO CALCULATE THE NUMBER": INPUT "OF DAYS BETWEEN TWO DATES? ";ANS$
  218. 4018  IF  LEFT$(ANS$,1) = "Y"  THEN FLAG = 1: GOSUB 600: GOTO 4004
  219. 4020  VTAB 8: CALL  -958: PRINT "4. NUMBER OF DAYS"; TAB( 30);: IF FLAG  THEN  PRINT A(4): GOTO 4024
  220. 4022  INPUT A(4):FLAG = 1
  221. 4024  VTAB 15: INVERSE : PRINT " TYPE 'END' TO RETURN TO MENU ": NORMAL : PRINT : INPUT "ANY CHANGES? ";ANS$
  222. 4026  IF  LEFT$(ANS$,1) = "N"  THEN 4034
  223. 4028  IF  LEFT$(ANS$,1) = "E"  THEN 200
  224. 4030  INPUT "WHICH PART? ";W: IF W = 4  THEN 4016
  225. 4032  PRINT "CHANGE PART ";W;" TO: ";: INPUT A(W): GOTO 4004
  226. 4034 AMT = A(1):IR = A(2):IC = A(3):DAYS = A(4)
  227. 4036 CP(1) = 360:CP(2) = 365:CP(3) = 12:CP(4) = 4
  228. 4038 :
  229. 4100  REM  OUTPUT HEADINGS
  230. 4102  HOME : VTAB 2: INVERSE : PRINT " COMPOUNDING $";AMT;" FOR ";DAYS;" DAYS. ": NORMAL : PRINT 
  231. 4104  PRINT "PCNT"; TAB( 7);"360 DAY"; TAB( 16);"365 DAY"; TAB( 26);"MONTH"; TAB( 34);"QUARTER";
  232. 4106  GOSUB 400: PRINT 
  233. 4108 :
  234. 4200  REM  CALCULATIONS/OUTPUT
  235. 4202 PL = 4:DP = 0:P = IR *100: GOSUB 300: PRINT P$;
  236. 4204  FOR X = 1 TO 4
  237. 4206 I = IR/(CP(X) *100)
  238. 4208 TIME =  INT(DAYS/ INT(365/CP(X)))
  239. 4210 FUTAMT = AMT *(1 +I) ^TIME
  240. 4212 PL = 9:DP = 2:P = FUTAMT
  241. 4214  GOSUB 300: PRINT P$;
  242. 4216  NEXT X
  243. 4218 :
  244. 4220  REM  TEST FOR PROGRAM END
  245. 4222 IR = IR -IC: IF  PEEK(37) <21  AND IR >0  THEN 4202
  246. 4224  VTAB 24: HTAB 26: PRINT "PRESS ANY KEY ";: CALL  -756: GOTO 4004
  247. 4226 :
  248. 5000  REM  UNEARNED INTEREST REBATE (RULE OF 78'S)
  249. 5002  CLEAR :DP = 2:G$ =  CHR$(7)
  250. 5004  HOME : VTAB 5: PRINT "1. TOTAL NUMBER OF PAYMENTS"; TAB( 30);: IF FLAG  THEN  PRINT A(1): GOTO 5008
  251. 5006 VT = 5:HT = 30:LS = 2: VTAB VT: HTAB HT: CALL  -868: GOSUB 900:A(1) =  VAL(CS$): IF A(1) = 0  OR  STR$(A(1)) < >CS$  THEN  PRINT G$;: GOTO 5006
  252. 5008  PRINT "2. MONTHLY PAYMENT AMOUNT"; TAB( 30);: IF FLAG  THEN  PRINT A(2): GOTO 5012
  253. 5010 VT = 6:HT = 30:LS = 6: VTAB VT: HTAB HT: CALL  -868: GOSUB 900:A(2) =  VAL(CS$): IF A(2) = 0  OR  STR$(A(2)) < >CS$  THEN  PRINT G$;: GOTO 5010
  254. 5012  PRINT "3. TOTAL FINANCE CHARGE"; TAB( 30);: IF FLAG  THEN  PRINT A(3): GOTO 5016
  255. 5014 VT = 7:HT = 30: VTAB VT: HTAB HT: CALL  -868: GOSUB 900:A(3) =  VAL(CS$): IF A(3) = 0  OR  STR$(A(3)) < >CS$  THEN  PRINT G$;: GOTO 5014
  256. 5016  PRINT "4. NUMBER OF PAYMENTS MADE"; TAB( 30);: IF FLAG  THEN  PRINT A(4): GOTO 5020
  257. 5018 VT = 8:HT = 30: VTAB VT: HTAB HT: CALL  -868:LS = 2: GOSUB 900:A(4) =  VAL(CS$):FLAG = 1: IF  STR$(A(4)) < >CS$  THEN  PRINT G$;: GOTO 5018
  258. 5020  VTAB 15: INVERSE : PRINT " TYPE 'END' TO RETURN TO MENU ": NORMAL 
  259. 5022  VTAB 17: HTAB 1: PRINT "ANY CHANGES?":VT = 17:HT = 14: VTAB VT: HTAB HT: CALL  -868:LS = 3: GOSUB 900: IF CS$ < >"Y"  AND CS$ < >"N"  AND  LEFT$(CS$,1) < >"E"  THEN  PRINT G$;: GOTO 5022
  260. 5024 CS$ =  LEFT$(CS$,1): IF CS$ = "E"  THEN 200
  261. 5026  IF CS$ = "N"  THEN 5034
  262. 5028  VTAB 18: HTAB 1: PRINT "WHICH ONE?":VT = 18:HT = 12: VTAB VT: HTAB HT: CALL  -868:LS = 1: GOSUB 900:W =  VAL(CS$): IF  STR$(W) < >CS$  OR W <1  OR W >4  THEN  PRINT G$;: GOTO 5028
  263. 5030  VTAB 19: HTAB 1: PRINT "CHANGE PART ";W;" TO:":VT = 19:HT = 19: VTAB VT: HTAB HT: CALL  -868:LS = 6 -4 *(W = 1  OR W = 4): GOSUB 900:A(W) =  VAL(CS$): IF  STR$(A(W)) < >CS$  THEN  PRINT G$;: GOTO 5030
  264. 5032  GOTO 5004
  265. 5034 NP = A(1):PMT = A(2):FC = A(3):NMADE = A(4)
  266. 5036 :
  267. 5100  REM  OUTPUT HEADING SECTION
  268. 5102  HOME : PRINT "PAYMENT"; TAB( 11);"REMAIN"; TAB( 22);"REBATE"; TAB( 33);"TOTAL"
  269. 5104  PRINT "NUMBER"; TAB( 11);"BALANCE"; TAB( 22);"AMOUNT"; TAB( 32);"INTEREST"
  270. 5106  GOSUB 400
  271. 5108 :
  272. 5200  REM  CALCULATION/OUTPUT
  273. 5202  FOR I = NMADE TO NP
  274. 5204 J = NP -I
  275. 5206 REBTE = ((J *FC) *(J +1))/(NP *(NP +1))
  276. 5208 BAL = (J *PMT) -REBTE
  277. 5210  PRINT  SPC( 3 -(I >9));I;:PL = 7:P = BAL: GOSUB 300: PRINT  TAB( 10);P$;:P = REBTE: GOSUB 300: PRINT  TAB( 21);P$;:P = FC -REBTE: GOSUB 300: PRINT  TAB( 32);P$
  278. 5212 :
  279. 5300  REM  PROGRAM ENDING
  280. 5302  IF  PEEK(37) <22  AND J >0  THEN  NEXT I
  281. 5304  VTAB 24: HTAB 26: PRINT "PRESS ANY KEY ";: CALL  -756: GOTO 5004
  282. 5306 :
  283. 6000  REM  LINEAR REGRESSION
  284. 6002 :
  285. 6004  REM  INITIALIZATION
  286. 6006  CLEAR :SCR$ = "":DP = 2:G$ =  CHR$(7): REM  SCR$ MUST BE FIRST STRING
  287. 6008  TEXT : HOME : VTAB 10: PRINT "INSTRUCTIONS?":VT = 10:HT = 15:LS = 1
  288. 6010  VTAB VT: HTAB HT: CALL  -868: GOSUB 900: IF CS$ = "N"  THEN 6202
  289. 6012  IF CS$ < >"Y"  THEN  PRINT G$;: GOTO 6010
  290. 6014 :
  291. 6100  REM  INSTRUCTIONS
  292. 6102 :
  293. 6104  HOME : VTAB 2: HTAB 6: PRINT "LINEAR REGRESSION - TREND LINE": GOSUB 400
  294. 6106  PRINT "A DETERMINISTIC FORECASTING MODEL CAN BE";: PRINT "REPRESENTED BY FITTING A STRAIGHT LINE": PRINT "THROUGH A GIVEN SET OF POINTS USING THE"
  295. 6108  PRINT "METHOD OF LEAST SQUARES.": PRINT 
  296. 6110  PRINT "ENTER AS MANY KNOWN PAIRS AS POSSIBLE.": PRINT "THEN ";: INVERSE : PRINT "Q";: NORMAL : PRINT "UIT TO GET A CALCULATED LINE OF": PRINT "THE FORM:  F(X) = A + B * X WITH A COEF.";
  297. 6112  PRINT "OF DETERMINATION BETWEEN ZERO AND ONE."
  298. 6114  PRINT : PRINT "ENTER AN INDEPENDENT VARIABLE VALUE AND": PRINT "INCREMENT TO GET A SCREEN OF CALCULATED"
  299. 6116  PRINT "PAIRS INCLUDING THE DESIRED INDIVIDUAL": PRINT "DEPENDENT VALUE ";: INVERSE : PRINT "HILIGHTED.": NORMAL 
  300. 6118  PRINT : PRINT "A COMMAND LINE PRESENTS THE OPPORTUNITY"
  301. 6120  PRINT "TO PRINT, ADD MORE DATA, SAME EQUATION"
  302. 6122  PRINT "OR QUIT."
  303. 6124  INVERSE : VTAB 20: HTAB 4: PRINT "P";: HTAB 15: PRINT "M";: HTAB 26: PRINT "S": VTAB 21: HTAB 4: PRINT "Q": NORMAL 
  304. 6126  VTAB 24: HTAB 6: PRINT "(PRESS ANY KEY TO CONTINUE)";: CALL  -756
  305. 6128 :
  306. 6200  REM  INPUT SECTION / MAIN PROGRAM
  307. 6202 XSUM = 0:YSUM = 0:X2RD = 0:Y2RD = 0:PROD = 0:N = 0
  308. 6204 X = 0:Y = 0: HOME : VTAB 2
  309. 6206  HTAB 5: PRINT "INDEPENDENT"; TAB( 25);"DEPENDENT": HTAB 6: PRINT "VARIABLE"; TAB( 25);"VARIABLE"
  310. 6208  HTAB 4: PRINT "-------------"; TAB( 24);"-----------"
  311. 6210  VTAB 12: HTAB 4: PRINT "ENTER POINT NUMBER:    OR ";: INVERSE : PRINT "Q";: NORMAL : PRINT "UIT.": VTAB 15: GOSUB 400
  312. 6212  VTAB 16: HTAB 4: PRINT "CURRENT STATUS OF VARIABLE SUMS:": PRINT 
  313. 6214  PRINT "INDEPENDENT VARIABLE:": PRINT "  DEPENDENT VARIABLE:": PRINT " INDEPENDENT SQUARES:": PRINT "   DEPENDENT SQUARES:": PRINT "PRODUCT OF VARIABLES:"
  314. 6216 N = N +1
  315. 6218 XSUM = XSUM +X:PL = 14:P = XSUM: GOSUB 300: VTAB 18: HTAB 24: PRINT P$
  316. 6220 YSUM = YSUM +Y:P = YSUM: GOSUB 300: VTAB 19: HTAB 24: PRINT P$
  317. 6222 X2RD = X2RD +X ^2:P = X2RD: VTAB 20: HTAB 24: IF P <1E8  THEN  GOSUB 300: PRINT P$: GOTO 6226
  318. 6224  PRINT  RIGHT$("     " + STR$(P),14)
  319. 6226 Y2RD = Y2RD +Y ^2:P = Y2RD: VTAB 21: HTAB 24: IF P <1E8  THEN  GOSUB 300: PRINT P$: GOTO 6230
  320. 6228  PRINT  RIGHT$("     " + STR$(P),14)
  321. 6230 PROD = PROD +X *Y: VTAB 22: HTAB 24: IF P <1E8  THEN  GOSUB 300: PRINT P$: GOTO 6234
  322. 6232  PRINT  RIGHT$("     " + STR$(P),14)
  323. 6234  VTAB 12: HTAB 24: PRINT N
  324. 6236 VT = 6:HT = 5:LS = 10: VTAB VT: HTAB 1: CALL  -868: GOSUB 900
  325. 6238  IF CS$ = "Q"  THEN 6300
  326. 6240 X =  VAL(CS$)
  327. 6242  IF  STR$(X) < >CS$  OR (X = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 6236
  328. 6244 VT = 6:HT = 25: VTAB VT: HTAB HT: CALL  -868: GOSUB 900
  329. 6246 Y =  VAL(CS$)
  330. 6248  IF  STR$(Y) < >CS$  OR (Y = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 6244
  331. 6250  GOTO 6216
  332. 6252 :
  333. 6300  REM  CALCULATE TREND LINE
  334. 6302 N = N -1
  335. 6304  IF N = 0  THEN 200
  336. 6306  IF N <2  THEN  VTAB 6: HTAB 1: CALL  -868: PRINT G$;"CAN'T CREATE TREND LINE WITH ONE POINT";G$: FOR PA = 1 TO 2000: NEXT : GOTO 6202
  337. 6308 SLOPE = (N *PROD -YSUM *XSUM)/(N *X2RD -XSUM ^2)
  338. 6310 CNST = (YSUM -SLOPE *XSUM)/N
  339. 6312 NUM = SLOPE *(PROD -XSUM *YSUM/N)
  340. 6314 DENOM = Y2RD -YSUM ^2/N
  341. 6316 COEFF = NUM/DENOM
  342. 6318 :
  343. 6400  REM  SET-UP OUTPUT TABLE
  344. 6402  HOME : PRINT "TREND LINE CALCULATED FROM ";N;" POINTS:"
  345. 6404  PRINT "F(X) = "; INT(CNST *1E3 +.5)/1E3;" + ("; INT(SLOPE *1E3 +.5)/1E3;") X"
  346. 6406  PRINT "COEFFICIENT OF DETERMINATION= "; INT(COEFF *1E4 +.5)/1E4
  347. 6408  GOSUB 400
  348. 6410  CALL  -958: VTAB 10: HTAB 1: PRINT "INDEPENDENT VALUE:": REM  GET VALUE
  349. 6412 VT = 10:HT = 20:LS = 10: VTAB VT: HTAB HT: CALL  -868: GOSUB 900
  350. 6414 X =  VAL(CS$): IF  STR$(X) < >CS$  OR (X = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 6412
  351. 6416  PRINT : PRINT "INCREMENTED BY   :": REM  GET CHANGE IN VALUE
  352. 6418 VT = 12:HT = 20:LS = 4: VTAB VT: HTAB HT: CALL  -868: GOSUB 900
  353. 6420 CH =  VAL(CS$)
  354. 6422  IF CS$ < > STR$(CH)  OR (CH = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 6418
  355. 6424 :
  356. 6500  REM  CALCULATION / OUTPUT
  357. 6502  VTAB 5: HTAB 1: CALL  -958: HTAB 4: PRINT "INDEPENDENT";: HTAB 20: PRINT "DEPENDENT": HTAB 7: PRINT "VARIABLE";: HTAB 21: PRINT "VARIABLE": HTAB 4: PRINT "-----------     ---------"
  358. 6504 ST = X -6 *CH:EN = X +6 *CH
  359. 6506  FOR I = ST TO EN  STEP CH
  360. 6508 P = I: GOSUB 300: PRINT P$;: IF I = X  THEN  INVERSE 
  361. 6510 P = SLOPE *I +CNST: GOSUB 300: PRINT P$: NORMAL 
  362. 6512  NEXT I
  363. 6514 :
  364. 6600  REM  PROGRAM ENDING?
  365. 6602  VTAB 22: GOSUB 400: PRINT "PRINT MORE DATA SAME EQUATION OR QUIT:";
  366. 6604  VTAB 23: INVERSE : HTAB 1: PRINT "P";: HTAB 7: PRINT "M";: HTAB 17: PRINT "S";: HTAB 34: PRINT "Q";: NORMAL 
  367. 6606 VT = 23:HT = 39: VTAB VT:LS = 1: HTAB HT: CALL  -868: GOSUB 900
  368. 6608  IF CS$ = "Q"  THEN 6202
  369. 6610  IF CS$ = "S"  THEN  VTAB 5: HTAB 1: GOTO 6410
  370. 6612  IF CS$ = "M"  THEN 6204
  371. 6614  IF CS$ < >"P"  THEN  PRINT G$;: GOTO 6606
  372. 6616 TLINE = 1:BLINE = 21: GOSUB 700: GOTO 6606
  373. 6618 :
  374. 7000  REM  EXPONENTIAL CURVE FIT
  375. 7002 :
  376. 7004  REM  INITIALIZATION
  377. 7006  CLEAR :SCR$ = "":DP = 2:G$ =  CHR$(7): REM  SCR$ MUST BE FIRST STRING
  378. 7008  TEXT : HOME : VTAB 10: PRINT "INSTRUCTIONS?":VT = 10:HT = 15:LS = 1
  379. 7010  VTAB VT: HTAB HT: CALL  -868: GOSUB 900: IF CS$ = "N"  THEN 7202
  380. 7012  IF CS$ < >"Y"  THEN  PRINT G$;: GOTO 7010
  381. 7014 :
  382. 7100  REM  INSTRUCTIONS
  383. 7102 :
  384. 7104  HOME : VTAB 2: HTAB 3: PRINT "EXPONENTIAL CURVE FIT - GROWTH CURVE": GOSUB 400
  385. 7106  PRINT "A DETERMINISTIC FORECASTING MODEL CAN BE";: PRINT "REPRESENTED BY FITTING A CURVED LINE": PRINT "THROUGH A GIVEN SET OF POINTS USING THE"
  386. 7108  PRINT "METHOD OF LEAST SQUARES.": PRINT 
  387. 7110  PRINT "ENTER AS MANY KNOWN PAIRS AS POSSIBLE,": PRINT "THEN ";: INVERSE : PRINT "Q";: NORMAL : PRINT "UIT TO GET A CALCULATED CURVE OF": PRINT "FORM: F(X)= EXP (A) + EXP (B * X) WITH A";
  388. 7112  PRINT "COEFF. OF DETERMINATION BETWEEN 0 AND 1."
  389. 7114  PRINT "ENTER AN INDEPENDENT VARIABLE VALUE AND": PRINT "INCREMENT TO GET A SCREEN OF CALCULATED"
  390. 7116  PRINT "PAIRS INCLUDING THE DESIRED INDIVIDUAL": PRINT "DEPENDENT VALUE ";: INVERSE : PRINT "HILIGHTED.": NORMAL 
  391. 7118  PRINT : PRINT "A COMMAND LINE PRESENTS THE OPPORTUNITY"
  392. 7120  PRINT "TO PRINT, ADD MORE DATA, SAME EQUATION"
  393. 7122  PRINT "OR QUIT."
  394. 7124  INVERSE : VTAB 20: HTAB 4: PRINT "P";: HTAB 15: PRINT "M";: HTAB 26: PRINT "S": VTAB 21: HTAB 4: PRINT "Q": NORMAL 
  395. 7126  VTAB 24: HTAB 6: PRINT "(PRESS ANY KEY TO CONTINUE)";: CALL  -756
  396. 7200  REM  INPUT SECTION / MAIN PROGRAM
  397. 7202 XSUM = 0:YLGSUM = 0:X2RD = 0:Y2RD = 0:PROD = 0:N = 0
  398. 7204 X = 0:Y = 0: HOME : VTAB 2
  399. 7206  HTAB 5: PRINT "INDEPENDENT"; TAB( 25);"DEPENDENT": HTAB 6: PRINT "VARIABLE"; TAB( 25);"VARIABLE"
  400. 7208  HTAB 4: PRINT "-------------"; TAB( 24);"-----------"
  401. 7210  VTAB 12: HTAB 4: PRINT "ENTER POINT NUMBER:    OR ";: INVERSE : PRINT "Q";: NORMAL : PRINT "UIT.": VTAB 15: GOSUB 400
  402. 7212  VTAB 16: HTAB 4: PRINT "CURRENT STATUS OF VARIABLE SUMS:": PRINT 
  403. 7214  PRINT "INDEPENDENT VARIABLE:": PRINT "LOG DEPNDNT VARIABLE:": PRINT " INDEPENDENT SQUARES:": PRINT "LOG DEPENDNT SQUARES:": PRINT "PRODUCT OF VARIABLES:"
  404. 7216 N = N +1
  405. 7218 XSUM = XSUM +X:PL = 14:P = XSUM: GOSUB 300: VTAB 18: HTAB 24: PRINT P$
  406. 7220  IF Y = 0  THEN 7224
  407. 7222 YLGSUM = YLGSUM + LOG(Y)
  408. 7224 P = YLGSUM: GOSUB 300: VTAB 19: HTAB 24: PRINT P$
  409. 7226 X2RD = X2RD +X ^2:P = X2RD: VTAB 20: HTAB 24: IF P <1E8  THEN  GOSUB 300: PRINT P$: GOTO 7230
  410. 7228  PRINT  RIGHT$("     " + STR$(P),14)
  411. 7230  IF Y = 0  THEN 7234
  412. 7232 Y2RD = Y2RD +( LOG(Y)) ^2
  413. 7234 P = Y2RD: VTAB 21: HTAB 24: IF P <1E8  THEN  GOSUB 300: PRINT P$: GOTO 7238
  414. 7236  PRINT  RIGHT$("     " + STR$(P),14)
  415. 7238  IF Y = 0  THEN 7242
  416. 7240 PROD = PROD +X * LOG(Y)
  417. 7242 P = PROD: VTAB 22: HTAB 24: IF P <1E8  THEN  GOSUB 300: PRINT P$: GOTO 7246
  418. 7244  PRINT  RIGHT$("     " + STR$(P),14)
  419. 7246  VTAB 12: HTAB 24: PRINT N
  420. 7248 VT = 6:HT = 5:LS = 10: VTAB VT: HTAB 1: CALL  -868: GOSUB 900
  421. 7250  IF CS$ = "Q"  THEN 7300
  422. 7252 X =  VAL(CS$)
  423. 7254  IF  STR$(X) < >CS$  OR (X = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 7248
  424. 7256 VT = 6:HT = 25: VTAB VT: HTAB HT: CALL  -868: GOSUB 900
  425. 7258 Y =  VAL(CS$)
  426. 7260  IF  STR$(Y) < >CS$  OR (Y = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 7256
  427. 7262  GOTO 7216
  428. 7264 :
  429. 7300  REM  CALCULATE EXP CURVE
  430. 7302 N = N -1
  431. 7304  IF N = 0  THEN 200
  432. 7306  IF N <2  THEN  VTAB 6: HTAB 4: CALL  -868: PRINT G$;"CAN'T FIT THE CURVE WITH ONE POINT";G$: FOR PA = 1 TO 2000: NEXT : GOTO 7202
  433. 7308 CURVE = (N *PROD -YLGSUM *XSUM)/(N *X2RD -XSUM ^2)
  434. 7310 CNST = (YLGSUM -CURVE *XSUM)/N
  435. 7312 NUM = CURVE *(PROD -XSUM *YLGSUM/N)
  436. 7314 DENOM = Y2RD -YLGSUM ^2/N
  437. 7316 COEFF = NUM/DENOM
  438. 7318 :
  439. 7400  REM  SET-UP OUTPUT TABLE
  440. 7402  HOME : PRINT " EXP. CURVE CALCULATED FROM ";N;" POINTS:"
  441. 7404  PRINT " F(X) = "; INT( EXP(CNST) *1E3 +.5)/1E3;" * EXP ("; INT(CURVE *1E3 +.5)/1E3;" X)"
  442. 7406  PRINT " COEFFICIENT OF DETERMINATION= "; INT(COEFF *1E4 +.5)/1E4
  443. 7408  GOSUB 400
  444. 7410  CALL  -958: VTAB 10: HTAB 1: PRINT "INDEPENDENT VALUE:": REM  GET VALUE
  445. 7412 VT = 10:HT = 20:LS = 10: VTAB VT: HTAB HT: CALL  -868: GOSUB 900
  446. 7414 X =  VAL(CS$): IF  STR$(X) < >CS$  OR (X = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 7412
  447. 7416  PRINT : PRINT "INCREMENTED BY   :": REM  GET CHANGE IN VALUE
  448. 7418 VT = 12:HT = 20:LS = 4: VTAB VT: HTAB HT: CALL  -868: GOSUB 900
  449. 7420 CH =  VAL(CS$)
  450. 7422  IF CS$ < > STR$(CH)  OR (CH = 0  AND CS$ < >"0")  THEN  PRINT G$;: GOTO 7418
  451. 7424 :
  452. 7500  REM  CALCULATION / OUTPUT
  453. 7502  VTAB 5: HTAB 1: CALL  -958: HTAB 4: PRINT "INDEPENDENT";: HTAB 20: PRINT "DEPENDENT": HTAB 7: PRINT "VARIABLE";: HTAB 21: PRINT "VARIABLE": HTAB 4: PRINT "-----------     ---------"
  454. 7504 ST = X -6 *CH:EN = X +6 *CH
  455. 7506  FOR I = ST TO EN  STEP CH
  456. 7508 P = I: GOSUB 300: PRINT P$;: IF I = X  THEN  INVERSE 
  457. 7510 P =  EXP(CURVE *I) * EXP(CNST): GOSUB 300: PRINT P$: NORMAL 
  458. 7512  NEXT I
  459. 7514 :
  460. 7600  REM  PROGRAM ENDING?
  461. 7602  VTAB 22: GOSUB 400: PRINT "PRINT MORE DATA SAME EQUATION OR QUIT:";
  462. 7604  VTAB 23: INVERSE : HTAB 1: PRINT "P";: HTAB 7: PRINT "M";: HTAB 17: PRINT "S";: HTAB 34: PRINT "Q";: NORMAL 
  463. 7606 VT = 23:HT = 39: VTAB VT:LS = 1: HTAB HT: CALL  -868: GOSUB 900
  464. 7608  IF CS$ = "Q"  THEN 7202
  465. 7610  IF CS$ = "S"  THEN  VTAB 5: HTAB 1: GOTO 7410
  466. 7612  IF CS$ = "M"  THEN 7204
  467. 7614  IF CS$ < >"P"  THEN  PRINT G$;: GOTO 7606
  468. 7616 TLINE = 1:BLINE = 21: GOSUB 700: GOTO 7606
  469. 7618 :
  470. 8000  REM  DIRECT REDUCTION LOAN
  471. 8002 :
  472. 8004  REM  PGM INITIALIZATION
  473. 8006  CLEAR :DP = 2:G$ =  CHR$(7)
  474. 8007 :
  475. 8100  REM  MENU / INPUT SECTION
  476. 8102  HOME : VTAB 5
  477. 8104  PRINT "1. MAX BORROW AMOUNT"; TAB( 25);: IF FLAG  THEN  PRINT A(1): GOTO 8108
  478. 8106  INPUT A(1)
  479. 8108  PRINT "2. CHANGE IN AMOUNT"; TAB( 25);: IF FLAG  THEN  PRINT A(2): GOTO 8112
  480. 8110  INPUT A(2)
  481. 8112  PRINT "3. MAX INTEREST RATE"; TAB( 25);: IF FLAG  THEN  PRINT A(3): GOTO 8116
  482. 8114  INPUT A(3)
  483. 8116  PRINT "4. CHANGE IN INT RATE"; TAB( 25);: IF FLAG  THEN  PRINT A(4): GOTO 8120
  484. 8118  INPUT A(4)
  485. 8120  PRINT "5. LOAN TERM (MONTHS)"; TAB( 25);: IF FLAG  THEN  PRINT A(5): GOTO 8124
  486. 8122  INPUT A(5):FLAG = 1
  487. 8124  PRINT : INVERSE : PRINT "TYPE 'END' TO RETURN TO MENU ": NORMAL : VTAB 18: INPUT "ANY CHANGES? ";Y$
  488. 8126  IF  LEFT$(Y$,1) = "N"  THEN 8146
  489. 8128  IF Y$ = "END"  THEN 200
  490. 8130  INPUT "WHICH ONE? ";W: PRINT "CHANGE PART ";W;" TO ";: INPUT A(W): GOTO 8102
  491. 8132 :
  492. 8134  REM  PAYMENT CALCULATION
  493. 8136 I = J/1200
  494. 8138 PMT = (K *I)/(1 -(1 +I) ^( -A(5)))
  495. 8140  RETURN 
  496. 8142 :
  497. 8144  REM  OUTPUT HEADING SECTION
  498. 8146  HOME : HTAB 13: INVERSE : PRINT " TERM: ";A(5);" MONTHS ": NORMAL 
  499. 8148  VTAB 2: PRINT "PRCNT";
  500. 8150  FOR K = A(1) -4 *A(2) TO A(1)  STEP A(2):P$ =  STR$( INT(K)):PL = 7: GOSUB 308: PRINT P$;: NEXT K
  501. 8152  GOSUB 400
  502. 8154 :
  503. 8156  REM  MAIN PROGRAM
  504. 8158 J = A(3)
  505. 8160 P = J:PL = 5: GOSUB 302: PRINT P$;
  506. 8162  FOR K = A(1) -4 *A(2) TO A(1)  STEP A(2)
  507. 8164  GOSUB 8136
  508. 8166 P = PMT:PL = 7: GOSUB 302: PRINT P$;
  509. 8168  NEXT K
  510. 8170 J = J -A(4)
  511. 8172  IF  PEEK(37) <22  AND J >0  THEN 8160
  512. 8174  VTAB 24: INVERSE : PRINT " ANY KEY FOR MENU ";: NORMAL 
  513. 8176  CALL  -756
  514. 8178  GOTO 8102
  515. 8180 :
  516. 9000  REM  AMORTIZATION SCHEDULE
  517. 9001  HOME : VTAB 5: INPUT "YEARLY INTEREST RATE % ";I:I = I/1200: INPUT "MONTHLY PAYMENT ";PMT: INPUT "INITIAL LOAN AMOUNT ";PV
  518. 9002  HOME :DP = 2:G$ =  CHR$(7)
  519. 9003  PRINT  TAB( 5);"PAID TO"; TAB( 15);"PAID"; TAB( 22);"REMAIN"; TAB( 33);"TOTAL"
  520. 9004  PRINT "NO"; TAB( 5);"PRINCIP"; TAB( 14);"TO INT"; TAB( 22);"BALANCE"; TAB( 32);"INTEREST": FOR DOT = 0 TO 39: PRINT ".";: NEXT DOT: POKE 34,3
  521. 9005 OB = PV:K = 1
  522. 9006 A = (1 +I) ^( -K)
  523. 9007 NB = (((A -1)/I) *PMT +PV)/A
  524. 9008  IF NB < = 0  THEN 9014
  525. 9009 PRIN = OB -NB:K$ =  STR$(K):K$ = K$ +"  ": PRINT  LEFT$(K$,3);:P = PRIN:PL = 7: GOSUB 300: PRINT P$;
  526. 9010 IN = PMT -PRIN:P = IN:PL = 9: GOSUB 300: PRINT P$;:P = NB:PL = 10: GOSUB 300: PRINT P$;
  527. 9011 TIN = K *PMT -PV +NB:P = TIN: GOSUB 300: PRINT P$
  528. 9012 K = K +1:OB = NB
  529. 9013  IF  PEEK(37) < >23  THEN 9006
  530. 9014  VTAB 24: INVERSE : PRINT " ESC TO EXIT OR ANY KEY TO CONTINUE ";: NORMAL 
  531. 9015  POKE  -16368,0: GET Z$: IF Z$ < > CHR$(27)  THEN  HOME : GOTO 9006
  532. 9016  POKE 34,0: GOTO 200